﻿using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using SistemaGO_Library;
using SistemaGO_Library.Entidades.Ocorrencia;
using SistemaGO_Library.Entidades.Cancelamento;
using SistemaGO_Library.Entidades.Terceiro;
using SistemaGO_Library.Entidades.Proposta;
using SistemaGO_Library.Entidades.Usuario;
using SistemaGO_Library.Entidades.Categoria;

namespace SistemaGO_Service
{
    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {
        Fachada fachada = Fachada.getInstance();
        Ocorrencia oco = new Ocorrencia();
        Cancelamento cancel = new Cancelamento();
        Terceiro terc = new Terceiro();
        Proposta prop = new Proposta();
        Usuario usu = new Usuario();
        Categoria cat = new Categoria();

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public string[] buscarCategorias()
        {
            return fachada.buscarNomesCategorias();
        }

        [WebMethod]
        public int buscarCodigoOcorrencia()
        {
            return fachada.buscarCodigoOcorrencia();
        }

        [WebMethod]
        public int buscarCodCatPorNome(string categoria)
        {
            return fachada.buscarCodigoCategoriaPorNome(categoria);
        }

        [WebMethod]
        public string buscarCatPorCod(int i)
        {
            cat = fachada.buscarCategoria(i);
            return cat.Categoria_nome;
        }

        [WebMethod]
        public void inserirOcorrencia(int codigo, int cat, string avrua, string bairro, string pontoref, string cep, string nome, string email, 
            string celular, string envio, string imagem, DateTime data, string situacao)
        {
            oco.Ocorrencia_cod = codigo;
            oco.Categoria_cod = cat;
            oco.Ocorrencia_av_rua = avrua;
            oco.Ocorrencia_bairro = bairro;
            oco.Ocorrencia_ponto_ref = pontoref;
            oco.Ocorrencia_cep = cep;
            oco.Denunciante_nome = nome;
            oco.Denunciante_email = email;
            oco.Denunciante_celular = celular;
            oco.Ocorrencia_envio = envio;
            oco.Ocorrencia_imagem = imagem;
            oco.Ocorrencia_data_cadastro = data;
            oco.Ocorrencia_situacao = situacao;
            fachada.inserirOcorrencia(oco);
        }

        [WebMethod]
        public void confirmarOcorrencia(string novaSituacao, int codigo)
        {
            fachada.mudarSituacaoOcorrencia(novaSituacao, codigo);
        }

        [WebMethod]
        public void cancelarOcorrencia(string login, int codigo, DateTime data, string descricao, string novaSituacao)
        {
            cancel.Usu_login_responsavel = login;
            cancel.Ocorrencia_cod = codigo;
            cancel.Cancelamento_data = data;
            cancel.Cancelamento_descricao = descricao;
            fachada.inserirCancelamento(cancel);
            fachada.mudarSituacaoOcorrencia(novaSituacao, codigo);
        }

        [WebMethod]
        public int logarTerceiro(int codigo, string cnpj)
        {
            terc = fachada.logarTerceiro(codigo, cnpj);
            if (terc == null)
            {
                return 0;
            }
            else
            {
                return 1;
            }
        }

        [WebMethod]
        public void inserirProposta(int codTerc, int codPed, DateTime dataProp, string obs, double valor, string prazo, string situacao)
        {
            prop.Terc_cod = codTerc;
            prop.Pedido_cod = codPed;
            prop.Proposta_data_envio = dataProp;
            prop.Proposta_observacao = obs;
            prop.Proposta_valor = valor;
            prop.Proposta_prazo = prazo;
            prop.Proposta_situacao = situacao;
            fachada.inserirProposta(prop);
        }

    }
}
